Bagging_Ensemble Analysis

앙상블분석(Ensemble Analysis)
앙상블 분석은 모형의 예측력을 높이고자 여러 번의 데이터 분할을 통하여 구축된 다수의 모형을 결합하여
새로운 모형을 만드는 방법이다.

대표적으로 배깅(bagging), 부스팅(boosting), 랜덤포레스트(random forest)가 있다.
배깅(Bagging, Bootstrap Aggregating)
여러 개의 붓스트랩(Bootstrap)을 집계하는 알고리즘이다.
(붓스트랩은 원본 데이터와 같은 크기의 표본을 랜덤복원 추출한 샘플 데이터를 의미한다. 특히 모델 훈련용(trian) 데이터)

앙상블 모델에서 각각의 모델을 분류기(classifier)라고 하고, 흔히 의사결정나무를 사용한다.
다수결로 최종 결괏값을 산정하는 작업을 보팅(voting)이라고 한다.

하나의 붓스트랩을 구성할 때, 원본 데이터로붜 복원추출을 진행하기 때문에 붓스트르배은 알 수 없던 모집단의 특성을
더 잘 반영할 수 있다.(분산이 작고 좋은 예측력을 보여준다.)
install.packages(‘adabag’)

> library(adabag)

> index<-sample(c(1, 2), nrow(iris), replace=T, prob=c(0.7, 0.3))

> train<-iris[index==1, ]

> test<-iris[index==2, ]

> result<-bagging(data=train, Species~.)

> plot(result$trees[[1]], margin=0.3)

> text(result$trees[[1]])

첫 번째 의사결정 나무(bagging의 의사결정 나무 개수 매개변수 mfinal의 default value=100)

> plot(result$trees[[100]], margin=0.3)

> text(result$trees[[100]])

백 번째 의사결정 나무

> pred<-predict(result, newdata=test)

> table(condition=test$Species, pred$class)

            

condition    setosa versicolor virginica

  setosa         14          0         0

  versicolor      0         16         0

  virginica       0          0         9


# pred$confusion으로도 결과 확인 가능

> pred$confusion

               Observed Class

Predicted Class setosa versicolor virginica

     setosa         14          0         0

     versicolor      0         16         0

     virginica       0          0         9


#pred$votes 로 각 데이터에 대한 투표결과를 얻을 수 있다.